/*
 * @Author: tyz
 * @Date: 2021-06-25 09:59:16
 * @LastEditTime: 2021-06-25 10:38:09
 * @Description: 队列
 * @FilePath: \nest_demo\src\queue\audio.controller.ts
 */
import { Controller, Post } from '@nestjs/common';
import { InjectQueue } from '@nestjs/bull';
import { Queue } from 'bull';

/*
  * 队列定义步骤：
  *   1. 安装'@nestjs/bull'、'bull'两个包 -> npm install @nestjs/bull bull
  *   2. 引入'InjectQueue'、'Queue'
  *   3. 在AudioController的构造器中传递Queue数据类型的数据
  *   4. 先新建一个自定义队列文件audio.processsor.ts文件，定义该队列需要执行的事件
  *   5. 然后在audio.module.ts中注册一个'audio'的队列，并将新建的队列文件映射到audio队列
  *   6. 最后在app.module.ts中注入此module文件
*/


@Controller('/audio')
export class AudioController {
  constructor(@InjectQueue('audio') private readonly audioQueue: Queue) {}

  @Post()
  async transcode() {
    await this.audioQueue.add(
      'transcode', // 队列调用的方法
      {
        file: 'audio.mp3', // 队列处理的文件
      },
      { delay: 1000 }, // 等待执行时间
    );
  }
}
